`
https://leetcode.cn/problems/gas-station/
`

/**
 * @param {number[]} gas
 * @param {number[]} cost
 * @return {number}
 */
var canCompleteCircuit = function (gas, cost) {
  // https://labuladong.online/algo/frequency-interview/gas-station-greedy/#%E5%9B%BE%E5%83%8F%E8%A7%A3%E6%B3%95
  const n = gas.length;
  // 相当于图像中的坐标点和最低点
  let sum = 0, minSum = 0;
  let start = 0;
  for (let i = 0; i < n; i++) {
    sum += gas[i] - cost[i];
    // 经过第 i 个站点后，使 sum 到达新低
    if (sum < minSum) {
      // 所以站点 i + 1 就是最低点（起点）
      start = i + 1;
      minSum = sum;
    }
  }
  // 总油量小于总的消耗，无解
  if (sum < 0) {
    return -1;
  }
  // 环形数组特性
  return start === n ? 0 : start;
};